Computer software is used to control a myriad of processes, in areas of business and entertainment for example. The market for computer software in all of its various forms is recognized to be very large and is growing every day. In industrialized nations, hardly a business exists that does not rely on computers and software either directly or indirectly, in their daily operations. The expansion of powerful communication networks, such as the Internet, has made it easy to exchange, copy and distribute software.
Software programs are typically written in a programming language and processed in some fashion, e.g., compiled to be turned into executable entities or interpreted. For example, software programs can be stored as text files containing source code in some high-level programming language, or text files containing assembly code, which require modification by a linker and loading by a loader in order to become executable. Thus, the term “software” as used herein, refers to executable code and or some executable or invokable behavior-providing entity which ultimately results from the conversion of code in some programming language into some executable or interpretable form or other data invoked by such code, such as static or shared libraries.
Digital watermarking is a process by which a marker is covertly embedded in digital content such as audio, video or image data. The marker is typically used to identify ownership, or to track distribution, of the digital content. Digital watermarks are typically only perceptible under certain conditions, i.e. after using a watermark detection algorithm. Watermarks are desired to be “robust” i.e., they cannot be easily removed by and attacker. Digital watermarking is useful in detecting unauthorized distribution, or other piracy, of digital content, such as video or audio content. For example, a watermark can be specific to a device and/or channel of distribution. When unauthorized content is discovered, the watermark can be read to ascertain the distribution device or distribution channel that is responsible for the unauthorized distribution.
The conceptual notion and benefits of watermarking for digital content could carry over to software. A marker could be similarly inserted into the software, and when unauthorized software is discovered, one can similarly learn about the distribution device or channel responsible. However, watermarking of executable software has tremendous challenges. While minor distortion of an image can be acceptable, any changes to software must not affect the function of the software. Known tracking of software is accomplished by recording hash-codes or signatures of code, or possibly by injecting identifiable strings or other junk data into the executable code. For example, A Practical Method for Watermarking Java Programs, The 24th Computer Software and Applications Conference (compsac2000), Taipei, Taiwan, October 2000, teaches that a copyright notice can be inserted into Java class files. Other techniques such as code-similarity detection and plagiarism-detectors are also known. However, current techniques for tracking software are not robust enough to serve as an effective watermark. For example, watermarks current techniques are easily removed, do not survive further processing, such as a compiling process, and/or can interfere with the function of the computer program code when executed.